package jp.co.nes.awssupport.common.utility;

import java.io.File;

import org.artofsolving.jodconverter.OfficeDocumentConverter;
import org.artofsolving.jodconverter.office.DefaultOfficeManagerConfiguration;
import org.artofsolving.jodconverter.office.OfficeManager;

/**
 * OfficeファイルをPDFに変換するクラスです。
 */
public class ExcelToPdfConverter {

    /** OpenOfficeインストールルートパス */
    private String openOfficeInstallRootPath;

    /** OpenOfficeのPDF変換ポート */
    private int openOfficePort;

    /**
     * OpenOfficeインストールルートパスとOpenOfficeのPDF変換ポートを引数にもつコンストラクタです。
     *
     * @param openOfficeInstallRootPath OpenOfficeインストールルートパス
     * @param openOfficePort OpenOfficeのPDF変換ポート
     */
    public ExcelToPdfConverter(String openOfficeInstallRootPath, int openOfficePort) {
        this.openOfficeInstallRootPath = openOfficeInstallRootPath;
        this.openOfficePort = openOfficePort;
    }

    /**
     * OfficeファイルをPDFに変換し保存します。
     *
     * @param officeFile オフィスファイル
     * @param pdfFile PDFファイル
     */
    public void convert(File officeFile, File pdfFile) {
        DefaultOfficeManagerConfiguration config = new DefaultOfficeManagerConfiguration();
        config.setOfficeHome(openOfficeInstallRootPath);
        config.setPortNumber(openOfficePort);

        OfficeManager officeManager = config.buildOfficeManager();
        officeManager.start();

        OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager);
        converter.convert(officeFile, pdfFile);

        officeManager.stop();
    }
}
